// vite.config.ts
import { fileURLToPath, URL } from "node:url";
import { defineConfig } from "file:///D:/phpstudy_pro/niuge/xibei/0default/z_web_h5_node22_vue3_pnpm/node_modules/vite/dist/node/index.js";
import vue from "file:///D:/phpstudy_pro/niuge/xibei/0default/z_web_h5_node22_vue3_pnpm/node_modules/@vitejs/plugin-vue/dist/index.mjs";
import AutoImport from "file:///D:/phpstudy_pro/niuge/xibei/0default/z_web_h5_node22_vue3_pnpm/node_modules/unplugin-auto-import/dist/vite.js";
import Components from "file:///D:/phpstudy_pro/niuge/xibei/0default/z_web_h5_node22_vue3_pnpm/node_modules/unplugin-vue-components/dist/vite.js";
import { VantResolver } from "file:///D:/phpstudy_pro/niuge/xibei/0default/z_web_h5_node22_vue3_pnpm/node_modules/@vant/auto-import-resolver/dist/index.js";
import postcssPresetEnv from "file:///D:/phpstudy_pro/niuge/xibei/0default/z_web_h5_node22_vue3_pnpm/node_modules/postcss-preset-env/dist/index.mjs";
import postcssPxToViewport from "file:///D:/phpstudy_pro/niuge/xibei/0default/z_web_h5_node22_vue3_pnpm/node_modules/postcss-px-to-viewport-8-plugin/lib/index.js";
var __vite_injected_original_import_meta_url = "file:///D:/phpstudy_pro/niuge/xibei/0default/z_web_h5_node22_vue3_pnpm/vite.config.ts";
var vite_config_default = defineConfig({
  plugins: [
    vue({
      template: {
        compilerOptions: {
          // 自定义元素白名单
          isCustomElement: (tag) => tag === "marquee"
        }
      }
    }),
    // 自动导入 API
    AutoImport({
      // 自动导入 Vue 相关函数，如：ref, reactive, toRef 等
      imports: ["vue", "vue-router", "pinia"],
      // 自动导入 Vant 相关函数，如：showDialog, showToast 等
      resolvers: [VantResolver()],
      // 生成自动导入的类型声明文件
      dts: "src/auto-imports.d.ts",
      // eslint 配置
      eslintrc: {
        enabled: true,
        filepath: "./.eslintrc-auto-import.json",
        globalsPropValue: true
      }
    }),
    // 自动注册组件
    Components({
      // 组件自动导入的目录
      dirs: ["src/components"],
      // 组件的有效文件扩展名
      extensions: ["vue"],
      // 配置文件生成位置
      dts: "src/components.d.ts",
      // 自动导入 Vant 组件
      resolvers: [VantResolver()]
    })
  ],
  resolve: {
    alias: {
      "@": fileURLToPath(new URL("./src", __vite_injected_original_import_meta_url)),
      "@api": fileURLToPath(new URL("./src/api", __vite_injected_original_import_meta_url)),
      "@assets": fileURLToPath(new URL("./src/assets", __vite_injected_original_import_meta_url)),
      "@components": fileURLToPath(new URL("./src/components", __vite_injected_original_import_meta_url)),
      "@views": fileURLToPath(new URL("./src/views", __vite_injected_original_import_meta_url)),
      "@stores": fileURLToPath(new URL("./src/stores", __vite_injected_original_import_meta_url)),
      "@utils": fileURLToPath(new URL("./src/utils", __vite_injected_original_import_meta_url)),
      "@hooks": fileURLToPath(new URL("./src/hooks", __vite_injected_original_import_meta_url)),
      "@types": fileURLToPath(new URL("./src/types", __vite_injected_original_import_meta_url))
    }
  },
  // 移动端兼容性配置
  esbuild: {
    // 生产环境去除 console 和 debugger
    drop: process.env.NODE_ENV === "production" ? ["console", "debugger"] : []
  },
  css: {
    postcss: {
      plugins: [
        postcssPresetEnv({
          // 移动端浏览器兼容性
          browsers: [
            "iOS >= 10",
            "Android >= 6",
            "last 2 versions"
          ]
        }),
        postcssPxToViewport({
          unitToConvert: "px",
          // 要转换的单位，默认为"px"
          viewportWidth: 375,
          // 设计稿的视口宽度，一般是375
          unitPrecision: 6,
          // 单位转换后保留的精度
          propList: ["*"],
          // 能转化为vw的属性列表
          viewportUnit: "vw",
          // 希望使用的视口单位
          fontViewportUnit: "vw",
          // 字体使用的视口单位
          selectorBlackList: [
            ".ignore",
            ".hairlines",
            ".van-",
            // Vant 组件忽略
            ".dp-",
            // 第三方组件忽略
            "[data-no-vw]"
            // 自定义忽略属性
          ],
          minPixelValue: 1,
          // 最小的转换数值，如果为1的话，只有大于1的值会被转换
          mediaQuery: false,
          // 媒体查询里的单位是否需要转换单位
          replace: true,
          // 是否直接更换属性值，而不添加备用属性
          exclude: [
            /node_modules/,
            /\.van-/,
            // 排除 Vant 组件样式
            /src\/assets\/reset\.css/
            // 排除重置样式文件
          ],
          landscape: false
          // 是否处理横屏情况
        })
      ]
    },
    preprocessorOptions: {
      // 配置 less
      less: {
        javascriptEnabled: true,
        // 全局变量文件
        additionalData: `@import "@/styles/variables.less";`
      },
      // 配置 scss（如果需要）
      scss: {
        additionalData: `@import "@/styles/variables.scss";`
      }
    }
  },
  build: {
    // 构建目标 - 移动端浏览器兼容
    target: ["es2015", "chrome58", "safari11"],
    // 输出目录
    outDir: "dist",
    // 静态资源目录
    assetsDir: "assets",
    // 小于此阈值的导入或引用资源将内联为 base64 编码
    assetsInlineLimit: 4096,
    // 启用/禁用 CSS 代码拆分
    cssCodeSplit: true,
    // 构建后是否生成 source map 文件
    sourcemap: process.env.NODE_ENV === "development",
    // 打包配置
    rollupOptions: {
      output: {
        // 分包策略
        manualChunks: {
          // 将 vue 相关库打包到一个 chunk 中
          "vue-vendor": ["vue", "vue-router", "pinia"],
          // 将 Vant 打包到一个 chunk 中
          "vant": ["vant"],
          // 将工具库打包到一个 chunk 中
          "utils": ["axios", "dayjs", "lodash-es"]
        },
        // 用于命名代码拆分时创建的共享块
        chunkFileNames: (chunkInfo) => {
          const facadeModuleId = chunkInfo.facadeModuleId ? chunkInfo.facadeModuleId.split("/") : [];
          const fileName = facadeModuleId[facadeModuleId.length - 2] || "[name]";
          return `js/${fileName}/[name].[hash].js`;
        },
        // 用于输出静态资源的命名
        assetFileNames: (assetInfo) => {
          const fileName = assetInfo.names?.[0] || assetInfo.name || "asset";
          const info = fileName.split(".");
          let extType = info[info.length - 1];
          if (/\.(png|jpe?g|gif|svg|webp|ico)$/i.test(fileName)) {
            extType = "images";
          } else if (/\.(woff2?|eot|ttf|otf)$/i.test(fileName)) {
            extType = "fonts";
          } else if (/\.css$/i.test(fileName)) {
            extType = "css";
          }
          return `${extType}/[name].[hash].[ext]`;
        },
        // 入口文件名
        entryFileNames: "js/[name].[hash].js"
      }
    },
    // 压缩配置
    minify: "terser",
    terserOptions: {
      compress: {
        // 生产环境移除 console
        drop_console: process.env.NODE_ENV === "production",
        drop_debugger: process.env.NODE_ENV === "production",
        // 移除无用代码
        pure_funcs: process.env.NODE_ENV === "production" ? ["console.log"] : []
      },
      mangle: {
        // 保留函数名（便于调试）
        keep_fnames: process.env.NODE_ENV === "development"
      }
    },
    // 设置打包文件大小警告限制
    chunkSizeWarningLimit: 1500
  },
  server: {
    // 服务器主机名 - 允许外部访问（手机调试）
    host: "0.0.0.0",
    // 端口号
    port: 3e3,
    // 自动打开浏览器
    open: true,
    // 开启 CORS
    cors: true,
    // 代理配置（如果需要）
    proxy: {
      "/api": {
        target: process.env.VITE_API_BASE_URL || "http://localhost:8080",
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/api/, "")
      }
    }
  },
  // 预览服务器配置
  preview: {
    port: 4173,
    host: "0.0.0.0",
    open: true
  },
  // 依赖优化配置
  optimizeDeps: {
    // 预构建包含的依赖
    include: [
      "vue",
      "vue-router",
      "pinia",
      "axios",
      "vant",
      "dayjs",
      "lodash-es"
    ],
    // 预构建中强制排除的依赖项
    exclude: ["@vant/touch-emulator"]
  },
  // 定义全局常量替换方式
  define: {
    __APP_VERSION__: JSON.stringify(process.env.npm_package_version || "0.0.0"),
    __BUILD_TIME__: JSON.stringify((/* @__PURE__ */ new Date()).toISOString()),
    __DEV__: process.env.NODE_ENV === "development",
    __PROD__: process.env.NODE_ENV === "production"
  }
});
export {
  vite_config_default as default
};
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJEOlxcXFxwaHBzdHVkeV9wcm9cXFxcbml1Z2VcXFxceGliZWlcXFxcMGRlZmF1bHRcXFxcel93ZWJfaDVfbm9kZTIyX3Z1ZTNfcG5wbVwiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiRDpcXFxccGhwc3R1ZHlfcHJvXFxcXG5pdWdlXFxcXHhpYmVpXFxcXDBkZWZhdWx0XFxcXHpfd2ViX2g1X25vZGUyMl92dWUzX3BucG1cXFxcdml0ZS5jb25maWcudHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL0Q6L3BocHN0dWR5X3Byby9uaXVnZS94aWJlaS8wZGVmYXVsdC96X3dlYl9oNV9ub2RlMjJfdnVlM19wbnBtL3ZpdGUuY29uZmlnLnRzXCI7aW1wb3J0IHsgZmlsZVVSTFRvUGF0aCwgVVJMIH0gZnJvbSAnbm9kZTp1cmwnXHJcbmltcG9ydCB7IGRlZmluZUNvbmZpZyB9IGZyb20gJ3ZpdGUnXHJcbmltcG9ydCB2dWUgZnJvbSAnQHZpdGVqcy9wbHVnaW4tdnVlJ1xyXG5pbXBvcnQgQXV0b0ltcG9ydCBmcm9tICd1bnBsdWdpbi1hdXRvLWltcG9ydC92aXRlJ1xyXG5pbXBvcnQgQ29tcG9uZW50cyBmcm9tICd1bnBsdWdpbi12dWUtY29tcG9uZW50cy92aXRlJ1xyXG5pbXBvcnQgeyBWYW50UmVzb2x2ZXIgfSBmcm9tICdAdmFudC9hdXRvLWltcG9ydC1yZXNvbHZlcidcclxuaW1wb3J0IHBvc3Rjc3NQcmVzZXRFbnYgZnJvbSAncG9zdGNzcy1wcmVzZXQtZW52J1xyXG5pbXBvcnQgcG9zdGNzc1B4VG9WaWV3cG9ydCBmcm9tICdwb3N0Y3NzLXB4LXRvLXZpZXdwb3J0LTgtcGx1Z2luJ1xyXG5cclxuLy8gaHR0cHM6Ly92aXRlLmRldi9jb25maWcvXHJcbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbmZpZyh7XHJcbiAgcGx1Z2luczogW1xyXG4gICAgdnVlKHtcclxuICAgICAgdGVtcGxhdGU6IHtcclxuICAgICAgICBjb21waWxlck9wdGlvbnM6IHtcclxuICAgICAgICAgIC8vIFx1ODFFQVx1NUI5QVx1NEU0OVx1NTE0M1x1N0QyMFx1NzY3RFx1NTQwRFx1NTM1NVxyXG4gICAgICAgICAgaXNDdXN0b21FbGVtZW50OiB0YWcgPT4gdGFnID09PSAnbWFycXVlZScsXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgIH0pLFxyXG4gICAgLy8gXHU4MUVBXHU1MkE4XHU1QkZDXHU1MTY1IEFQSVxyXG4gICAgQXV0b0ltcG9ydCh7XHJcbiAgICAgIC8vIFx1ODFFQVx1NTJBOFx1NUJGQ1x1NTE2NSBWdWUgXHU3NkY4XHU1MTczXHU1MUZEXHU2NTcwXHVGRjBDXHU1OTgyXHVGRjFBcmVmLCByZWFjdGl2ZSwgdG9SZWYgXHU3QjQ5XHJcbiAgICAgIGltcG9ydHM6IFsndnVlJywgJ3Z1ZS1yb3V0ZXInLCAncGluaWEnXSxcclxuICAgICAgLy8gXHU4MUVBXHU1MkE4XHU1QkZDXHU1MTY1IFZhbnQgXHU3NkY4XHU1MTczXHU1MUZEXHU2NTcwXHVGRjBDXHU1OTgyXHVGRjFBc2hvd0RpYWxvZywgc2hvd1RvYXN0IFx1N0I0OVxyXG4gICAgICByZXNvbHZlcnM6IFtWYW50UmVzb2x2ZXIoKV0sXHJcbiAgICAgIC8vIFx1NzUxRlx1NjIxMFx1ODFFQVx1NTJBOFx1NUJGQ1x1NTE2NVx1NzY4NFx1N0M3Qlx1NTc4Qlx1NThGMFx1NjYwRVx1NjU4N1x1NEVGNlxyXG4gICAgICBkdHM6ICdzcmMvYXV0by1pbXBvcnRzLmQudHMnLFxyXG4gICAgICAvLyBlc2xpbnQgXHU5MTREXHU3RjZFXHJcbiAgICAgIGVzbGludHJjOiB7XHJcbiAgICAgICAgZW5hYmxlZDogdHJ1ZSxcclxuICAgICAgICBmaWxlcGF0aDogJy4vLmVzbGludHJjLWF1dG8taW1wb3J0Lmpzb24nLFxyXG4gICAgICAgIGdsb2JhbHNQcm9wVmFsdWU6IHRydWUsXHJcbiAgICAgIH0sXHJcbiAgICB9KSxcclxuICAgIC8vIFx1ODFFQVx1NTJBOFx1NkNFOFx1NTE4Q1x1N0VDNFx1NEVGNlxyXG4gICAgQ29tcG9uZW50cyh7XHJcbiAgICAgIC8vIFx1N0VDNFx1NEVGNlx1ODFFQVx1NTJBOFx1NUJGQ1x1NTE2NVx1NzY4NFx1NzZFRVx1NUY1NVxyXG4gICAgICBkaXJzOiBbJ3NyYy9jb21wb25lbnRzJ10sXHJcbiAgICAgIC8vIFx1N0VDNFx1NEVGNlx1NzY4NFx1NjcwOVx1NjU0OFx1NjU4N1x1NEVGNlx1NjI2OVx1NUM1NVx1NTQwRFxyXG4gICAgICBleHRlbnNpb25zOiBbJ3Z1ZSddLFxyXG4gICAgICAvLyBcdTkxNERcdTdGNkVcdTY1ODdcdTRFRjZcdTc1MUZcdTYyMTBcdTRGNERcdTdGNkVcclxuICAgICAgZHRzOiAnc3JjL2NvbXBvbmVudHMuZC50cycsXHJcbiAgICAgIC8vIFx1ODFFQVx1NTJBOFx1NUJGQ1x1NTE2NSBWYW50IFx1N0VDNFx1NEVGNlxyXG4gICAgICByZXNvbHZlcnM6IFtWYW50UmVzb2x2ZXIoKV0sXHJcbiAgICB9KSxcclxuICBdLFxyXG5cclxuICByZXNvbHZlOiB7XHJcbiAgICBhbGlhczoge1xyXG4gICAgICAnQCc6IGZpbGVVUkxUb1BhdGgobmV3IFVSTCgnLi9zcmMnLCBpbXBvcnQubWV0YS51cmwpKSxcclxuICAgICAgJ0BhcGknOiBmaWxlVVJMVG9QYXRoKG5ldyBVUkwoJy4vc3JjL2FwaScsIGltcG9ydC5tZXRhLnVybCkpLFxyXG4gICAgICAnQGFzc2V0cyc6IGZpbGVVUkxUb1BhdGgobmV3IFVSTCgnLi9zcmMvYXNzZXRzJywgaW1wb3J0Lm1ldGEudXJsKSksXHJcbiAgICAgICdAY29tcG9uZW50cyc6IGZpbGVVUkxUb1BhdGgobmV3IFVSTCgnLi9zcmMvY29tcG9uZW50cycsIGltcG9ydC5tZXRhLnVybCkpLFxyXG4gICAgICAnQHZpZXdzJzogZmlsZVVSTFRvUGF0aChuZXcgVVJMKCcuL3NyYy92aWV3cycsIGltcG9ydC5tZXRhLnVybCkpLFxyXG4gICAgICAnQHN0b3Jlcyc6IGZpbGVVUkxUb1BhdGgobmV3IFVSTCgnLi9zcmMvc3RvcmVzJywgaW1wb3J0Lm1ldGEudXJsKSksXHJcbiAgICAgICdAdXRpbHMnOiBmaWxlVVJMVG9QYXRoKG5ldyBVUkwoJy4vc3JjL3V0aWxzJywgaW1wb3J0Lm1ldGEudXJsKSksXHJcbiAgICAgICdAaG9va3MnOiBmaWxlVVJMVG9QYXRoKG5ldyBVUkwoJy4vc3JjL2hvb2tzJywgaW1wb3J0Lm1ldGEudXJsKSksXHJcbiAgICAgICdAdHlwZXMnOiBmaWxlVVJMVG9QYXRoKG5ldyBVUkwoJy4vc3JjL3R5cGVzJywgaW1wb3J0Lm1ldGEudXJsKSksXHJcbiAgICB9LFxyXG4gIH0sXHJcblxyXG4gIC8vIFx1NzlGQlx1NTJBOFx1N0FFRlx1NTE3Q1x1NUJCOVx1NjAyN1x1OTE0RFx1N0Y2RVxyXG4gIGVzYnVpbGQ6IHtcclxuICAgIC8vIFx1NzUxRlx1NEVBN1x1NzNBRlx1NTg4M1x1NTNCQlx1OTY2NCBjb25zb2xlIFx1NTQ4QyBkZWJ1Z2dlclxyXG4gICAgZHJvcDogcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJyA/IFsnY29uc29sZScsICdkZWJ1Z2dlciddIDogW10sXHJcbiAgfSxcclxuXHJcbiAgY3NzOiB7XHJcbiAgICBwb3N0Y3NzOiB7XHJcbiAgICAgIHBsdWdpbnM6IFtcclxuICAgICAgICBwb3N0Y3NzUHJlc2V0RW52KHtcclxuICAgICAgICAgIC8vIFx1NzlGQlx1NTJBOFx1N0FFRlx1NkQ0Rlx1ODlDOFx1NTY2OFx1NTE3Q1x1NUJCOVx1NjAyN1xyXG4gICAgICAgICAgYnJvd3NlcnM6IFtcclxuICAgICAgICAgICAgJ2lPUyA+PSAxMCcsXHJcbiAgICAgICAgICAgICdBbmRyb2lkID49IDYnLFxyXG4gICAgICAgICAgICAnbGFzdCAyIHZlcnNpb25zJyxcclxuICAgICAgICAgIF0sXHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgcG9zdGNzc1B4VG9WaWV3cG9ydCh7XHJcbiAgICAgICAgICB1bml0VG9Db252ZXJ0OiAncHgnLCAvLyBcdTg5ODFcdThGNkNcdTYzNjJcdTc2ODRcdTUzNTVcdTRGNERcdUZGMENcdTlFRDhcdThCQTRcdTRFM0FcInB4XCJcclxuICAgICAgICAgIHZpZXdwb3J0V2lkdGg6IDM3NSwgLy8gXHU4QkJFXHU4QkExXHU3QTNGXHU3Njg0XHU4OUM2XHU1M0UzXHU1QkJEXHU1RUE2XHVGRjBDXHU0RTAwXHU4MjJDXHU2NjJGMzc1XHJcbiAgICAgICAgICB1bml0UHJlY2lzaW9uOiA2LCAvLyBcdTUzNTVcdTRGNERcdThGNkNcdTYzNjJcdTU0MEVcdTRGRERcdTc1NTlcdTc2ODRcdTdDQkVcdTVFQTZcclxuICAgICAgICAgIHByb3BMaXN0OiBbJyonXSwgLy8gXHU4MEZEXHU4RjZDXHU1MzE2XHU0RTNBdndcdTc2ODRcdTVDNUVcdTYwMjdcdTUyMTdcdTg4NjhcclxuICAgICAgICAgIHZpZXdwb3J0VW5pdDogJ3Z3JywgLy8gXHU1RTBDXHU2NzFCXHU0RjdGXHU3NTI4XHU3Njg0XHU4OUM2XHU1M0UzXHU1MzU1XHU0RjREXHJcbiAgICAgICAgICBmb250Vmlld3BvcnRVbml0OiAndncnLCAvLyBcdTVCNTdcdTRGNTNcdTRGN0ZcdTc1MjhcdTc2ODRcdTg5QzZcdTUzRTNcdTUzNTVcdTRGNERcclxuICAgICAgICAgIHNlbGVjdG9yQmxhY2tMaXN0OiBbXHJcbiAgICAgICAgICAgICcuaWdub3JlJyxcclxuICAgICAgICAgICAgJy5oYWlybGluZXMnLFxyXG4gICAgICAgICAgICAnLnZhbi0nLCAvLyBWYW50IFx1N0VDNFx1NEVGNlx1NUZGRFx1NzU2NVxyXG4gICAgICAgICAgICAnLmRwLScsIC8vIFx1N0IyQ1x1NEUwOVx1NjVCOVx1N0VDNFx1NEVGNlx1NUZGRFx1NzU2NVxyXG4gICAgICAgICAgICAnW2RhdGEtbm8tdnddJyAvLyBcdTgxRUFcdTVCOUFcdTRFNDlcdTVGRkRcdTc1NjVcdTVDNUVcdTYwMjdcclxuICAgICAgICAgIF0sXHJcbiAgICAgICAgICBtaW5QaXhlbFZhbHVlOiAxLCAvLyBcdTY3MDBcdTVDMEZcdTc2ODRcdThGNkNcdTYzNjJcdTY1NzBcdTUwM0NcdUZGMENcdTU5ODJcdTY3OUNcdTRFM0ExXHU3Njg0XHU4QkREXHVGRjBDXHU1M0VBXHU2NzA5XHU1OTI3XHU0RThFMVx1NzY4NFx1NTAzQ1x1NEYxQVx1ODhBQlx1OEY2Q1x1NjM2MlxyXG4gICAgICAgICAgbWVkaWFRdWVyeTogZmFsc2UsIC8vIFx1NUE5Mlx1NEY1M1x1NjdFNVx1OEJFMlx1OTFDQ1x1NzY4NFx1NTM1NVx1NEY0RFx1NjYyRlx1NTQyNlx1OTcwMFx1ODk4MVx1OEY2Q1x1NjM2Mlx1NTM1NVx1NEY0RFxyXG4gICAgICAgICAgcmVwbGFjZTogdHJ1ZSwgLy8gXHU2NjJGXHU1NDI2XHU3NkY0XHU2M0E1XHU2NkY0XHU2MzYyXHU1QzVFXHU2MDI3XHU1MDNDXHVGRjBDXHU4MDBDXHU0RTBEXHU2REZCXHU1MkEwXHU1OTA3XHU3NTI4XHU1QzVFXHU2MDI3XHJcbiAgICAgICAgICBleGNsdWRlOiBbXHJcbiAgICAgICAgICAgIC9ub2RlX21vZHVsZXMvLFxyXG4gICAgICAgICAgICAvXFwudmFuLS8sIC8vIFx1NjM5Mlx1OTY2NCBWYW50IFx1N0VDNFx1NEVGNlx1NjgzN1x1NUYwRlxyXG4gICAgICAgICAgICAvc3JjXFwvYXNzZXRzXFwvcmVzZXRcXC5jc3MvIC8vIFx1NjM5Mlx1OTY2NFx1OTFDRFx1N0Y2RVx1NjgzN1x1NUYwRlx1NjU4N1x1NEVGNlxyXG4gICAgICAgICAgXSxcclxuICAgICAgICAgIGxhbmRzY2FwZTogZmFsc2UsIC8vIFx1NjYyRlx1NTQyNlx1NTkwNFx1NzQwNlx1NkEyQVx1NUM0Rlx1NjBDNVx1NTFCNVxyXG4gICAgICAgIH0pLFxyXG4gICAgICBdLFxyXG4gICAgfSxcclxuICAgIHByZXByb2Nlc3Nvck9wdGlvbnM6IHtcclxuICAgICAgLy8gXHU5MTREXHU3RjZFIGxlc3NcclxuICAgICAgbGVzczoge1xyXG4gICAgICAgIGphdmFzY3JpcHRFbmFibGVkOiB0cnVlLFxyXG4gICAgICAgIC8vIFx1NTE2OFx1NUM0MFx1NTNEOFx1OTFDRlx1NjU4N1x1NEVGNlxyXG4gICAgICAgIGFkZGl0aW9uYWxEYXRhOiBgQGltcG9ydCBcIkAvc3R5bGVzL3ZhcmlhYmxlcy5sZXNzXCI7YCxcclxuICAgICAgfSxcclxuICAgICAgLy8gXHU5MTREXHU3RjZFIHNjc3NcdUZGMDhcdTU5ODJcdTY3OUNcdTk3MDBcdTg5ODFcdUZGMDlcclxuICAgICAgc2Nzczoge1xyXG4gICAgICAgIGFkZGl0aW9uYWxEYXRhOiBgQGltcG9ydCBcIkAvc3R5bGVzL3ZhcmlhYmxlcy5zY3NzXCI7YCxcclxuICAgICAgfSxcclxuICAgIH0sXHJcbiAgfSxcclxuXHJcbiAgYnVpbGQ6IHtcclxuICAgIC8vIFx1Njc4NFx1NUVGQVx1NzZFRVx1NjgwNyAtIFx1NzlGQlx1NTJBOFx1N0FFRlx1NkQ0Rlx1ODlDOFx1NTY2OFx1NTE3Q1x1NUJCOVxyXG4gICAgdGFyZ2V0OiBbJ2VzMjAxNScsICdjaHJvbWU1OCcsICdzYWZhcmkxMSddLFxyXG4gICAgLy8gXHU4RjkzXHU1MUZBXHU3NkVFXHU1RjU1XHJcbiAgICBvdXREaXI6ICdkaXN0JyxcclxuICAgIC8vIFx1OTc1OVx1NjAwMVx1OEQ0NFx1NkU5MFx1NzZFRVx1NUY1NVxyXG4gICAgYXNzZXRzRGlyOiAnYXNzZXRzJyxcclxuICAgIC8vIFx1NUMwRlx1NEU4RVx1NkI2NFx1OTYwOFx1NTAzQ1x1NzY4NFx1NUJGQ1x1NTE2NVx1NjIxNlx1NUYxNVx1NzUyOFx1OEQ0NFx1NkU5MFx1NUMwNlx1NTE4NVx1ODA1NFx1NEUzQSBiYXNlNjQgXHU3RjE2XHU3ODAxXHJcbiAgICBhc3NldHNJbmxpbmVMaW1pdDogNDA5NixcclxuICAgIC8vIFx1NTQyRlx1NzUyOC9cdTc5ODFcdTc1MjggQ1NTIFx1NEVFM1x1NzgwMVx1NjJDNlx1NTIwNlxyXG4gICAgY3NzQ29kZVNwbGl0OiB0cnVlLFxyXG4gICAgLy8gXHU2Nzg0XHU1RUZBXHU1NDBFXHU2NjJGXHU1NDI2XHU3NTFGXHU2MjEwIHNvdXJjZSBtYXAgXHU2NTg3XHU0RUY2XHJcbiAgICBzb3VyY2VtYXA6IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnLFxyXG4gICAgLy8gXHU2MjUzXHU1MzA1XHU5MTREXHU3RjZFXHJcbiAgICByb2xsdXBPcHRpb25zOiB7XHJcbiAgICAgIG91dHB1dDoge1xyXG4gICAgICAgIC8vIFx1NTIwNlx1NTMwNVx1N0I1Nlx1NzU2NVxyXG4gICAgICAgIG1hbnVhbENodW5rczoge1xyXG4gICAgICAgICAgLy8gXHU1QzA2IHZ1ZSBcdTc2RjhcdTUxNzNcdTVFOTNcdTYyNTNcdTUzMDVcdTUyMzBcdTRFMDBcdTRFMkEgY2h1bmsgXHU0RTJEXHJcbiAgICAgICAgICAndnVlLXZlbmRvcic6IFsndnVlJywgJ3Z1ZS1yb3V0ZXInLCAncGluaWEnXSxcclxuICAgICAgICAgIC8vIFx1NUMwNiBWYW50IFx1NjI1M1x1NTMwNVx1NTIzMFx1NEUwMFx1NEUyQSBjaHVuayBcdTRFMkRcclxuICAgICAgICAgICd2YW50JzogWyd2YW50J10sXHJcbiAgICAgICAgICAvLyBcdTVDMDZcdTVERTVcdTUxNzdcdTVFOTNcdTYyNTNcdTUzMDVcdTUyMzBcdTRFMDBcdTRFMkEgY2h1bmsgXHU0RTJEXHJcbiAgICAgICAgICAndXRpbHMnOiBbJ2F4aW9zJywgJ2RheWpzJywgJ2xvZGFzaC1lcyddLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8gXHU3NTI4XHU0RThFXHU1NDdEXHU1NDBEXHU0RUUzXHU3ODAxXHU2MkM2XHU1MjA2XHU2NUY2XHU1MjFCXHU1RUZBXHU3Njg0XHU1MTcxXHU0RUFCXHU1NzU3XHJcbiAgICAgICAgY2h1bmtGaWxlTmFtZXM6IChjaHVua0luZm8pID0+IHtcclxuICAgICAgICAgIGNvbnN0IGZhY2FkZU1vZHVsZUlkID0gY2h1bmtJbmZvLmZhY2FkZU1vZHVsZUlkID8gY2h1bmtJbmZvLmZhY2FkZU1vZHVsZUlkLnNwbGl0KCcvJykgOiBbXVxyXG4gICAgICAgICAgY29uc3QgZmlsZU5hbWUgPSBmYWNhZGVNb2R1bGVJZFtmYWNhZGVNb2R1bGVJZC5sZW5ndGggLSAyXSB8fCAnW25hbWVdJ1xyXG4gICAgICAgICAgcmV0dXJuIGBqcy8ke2ZpbGVOYW1lfS9bbmFtZV0uW2hhc2hdLmpzYFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8gXHU3NTI4XHU0RThFXHU4RjkzXHU1MUZBXHU5NzU5XHU2MDAxXHU4RDQ0XHU2RTkwXHU3Njg0XHU1NDdEXHU1NDBEXHJcbiAgICAgICAgYXNzZXRGaWxlTmFtZXM6IChhc3NldEluZm8pID0+IHtcclxuICAgICAgICAgIGNvbnN0IGZpbGVOYW1lID0gYXNzZXRJbmZvLm5hbWVzPy5bMF0gfHwgYXNzZXRJbmZvLm5hbWUgfHwgJ2Fzc2V0J1xyXG4gICAgICAgICAgY29uc3QgaW5mbyA9IGZpbGVOYW1lLnNwbGl0KCcuJylcclxuICAgICAgICAgIGxldCBleHRUeXBlID0gaW5mb1tpbmZvLmxlbmd0aCAtIDFdXHJcbiAgICAgICAgICBpZiAoL1xcLihwbmd8anBlP2d8Z2lmfHN2Z3x3ZWJwfGljbykkL2kudGVzdChmaWxlTmFtZSkpIHtcclxuICAgICAgICAgICAgZXh0VHlwZSA9ICdpbWFnZXMnXHJcbiAgICAgICAgICB9IGVsc2UgaWYgKC9cXC4od29mZjI/fGVvdHx0dGZ8b3RmKSQvaS50ZXN0KGZpbGVOYW1lKSkge1xyXG4gICAgICAgICAgICBleHRUeXBlID0gJ2ZvbnRzJ1xyXG4gICAgICAgICAgfSBlbHNlIGlmICgvXFwuY3NzJC9pLnRlc3QoZmlsZU5hbWUpKSB7XHJcbiAgICAgICAgICAgIGV4dFR5cGUgPSAnY3NzJ1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIGAke2V4dFR5cGV9L1tuYW1lXS5baGFzaF0uW2V4dF1gXHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyBcdTUxNjVcdTUzRTNcdTY1ODdcdTRFRjZcdTU0MERcclxuICAgICAgICBlbnRyeUZpbGVOYW1lczogJ2pzL1tuYW1lXS5baGFzaF0uanMnLFxyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICAgIC8vIFx1NTM4Qlx1N0YyOVx1OTE0RFx1N0Y2RVxyXG4gICAgbWluaWZ5OiAndGVyc2VyJyxcclxuICAgIHRlcnNlck9wdGlvbnM6IHtcclxuICAgICAgY29tcHJlc3M6IHtcclxuICAgICAgICAvLyBcdTc1MUZcdTRFQTdcdTczQUZcdTU4ODNcdTc5RkJcdTk2NjQgY29uc29sZVxyXG4gICAgICAgIGRyb3BfY29uc29sZTogcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJyxcclxuICAgICAgICBkcm9wX2RlYnVnZ2VyOiBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nLFxyXG4gICAgICAgIC8vIFx1NzlGQlx1OTY2NFx1NjVFMFx1NzUyOFx1NEVFM1x1NzgwMVxyXG4gICAgICAgIHB1cmVfZnVuY3M6IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicgPyBbJ2NvbnNvbGUubG9nJ10gOiBbXSxcclxuICAgICAgfSxcclxuICAgICAgbWFuZ2xlOiB7XHJcbiAgICAgICAgLy8gXHU0RkREXHU3NTU5XHU1MUZEXHU2NTcwXHU1NDBEXHVGRjA4XHU0RkJGXHU0RThFXHU4QzAzXHU4QkQ1XHVGRjA5XHJcbiAgICAgICAga2VlcF9mbmFtZXM6IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnLFxyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICAgIC8vIFx1OEJCRVx1N0Y2RVx1NjI1M1x1NTMwNVx1NjU4N1x1NEVGNlx1NTkyN1x1NUMwRlx1OEI2Nlx1NTQ0QVx1OTY1MFx1NTIzNlxyXG4gICAgY2h1bmtTaXplV2FybmluZ0xpbWl0OiAxNTAwLFxyXG4gIH0sXHJcblxyXG4gIHNlcnZlcjoge1xyXG4gICAgLy8gXHU2NzBEXHU1MkExXHU1NjY4XHU0RTNCXHU2NzNBXHU1NDBEIC0gXHU1MTQxXHU4QkI4XHU1OTE2XHU5MEU4XHU4QkJGXHU5NUVFXHVGRjA4XHU2MjRCXHU2NzNBXHU4QzAzXHU4QkQ1XHVGRjA5XHJcbiAgICBob3N0OiAnMC4wLjAuMCcsXHJcbiAgICAvLyBcdTdBRUZcdTUzRTNcdTUzRjdcclxuICAgIHBvcnQ6IDMwMDAsXHJcbiAgICAvLyBcdTgxRUFcdTUyQThcdTYyNTNcdTVGMDBcdTZENEZcdTg5QzhcdTU2NjhcclxuICAgIG9wZW46IHRydWUsXHJcbiAgICAvLyBcdTVGMDBcdTU0MkYgQ09SU1xyXG4gICAgY29yczogdHJ1ZSxcclxuICAgIC8vIFx1NEVFM1x1NzQwNlx1OTE0RFx1N0Y2RVx1RkYwOFx1NTk4Mlx1Njc5Q1x1OTcwMFx1ODk4MVx1RkYwOVxyXG4gICAgcHJveHk6IHtcclxuICAgICAgJy9hcGknOiB7XHJcbiAgICAgICAgdGFyZ2V0OiBwcm9jZXNzLmVudi5WSVRFX0FQSV9CQVNFX1VSTCB8fCAnaHR0cDovL2xvY2FsaG9zdDo4MDgwJyxcclxuICAgICAgICBjaGFuZ2VPcmlnaW46IHRydWUsXHJcbiAgICAgICAgcmV3cml0ZTogKHBhdGgpID0+IHBhdGgucmVwbGFjZSgvXlxcL2FwaS8sICcnKSxcclxuICAgICAgfSxcclxuICAgIH0sXHJcbiAgfSxcclxuXHJcbiAgLy8gXHU5ODg0XHU4OUM4XHU2NzBEXHU1MkExXHU1NjY4XHU5MTREXHU3RjZFXHJcbiAgcHJldmlldzoge1xyXG4gICAgcG9ydDogNDE3MyxcclxuICAgIGhvc3Q6ICcwLjAuMC4wJyxcclxuICAgIG9wZW46IHRydWUsXHJcbiAgfSxcclxuXHJcbiAgLy8gXHU0RjlEXHU4RDU2XHU0RjE4XHU1MzE2XHU5MTREXHU3RjZFXHJcbiAgb3B0aW1pemVEZXBzOiB7XHJcbiAgICAvLyBcdTk4ODRcdTY3ODRcdTVFRkFcdTUzMDVcdTU0MkJcdTc2ODRcdTRGOURcdThENTZcclxuICAgIGluY2x1ZGU6IFtcclxuICAgICAgJ3Z1ZScsXHJcbiAgICAgICd2dWUtcm91dGVyJyxcclxuICAgICAgJ3BpbmlhJyxcclxuICAgICAgJ2F4aW9zJyxcclxuICAgICAgJ3ZhbnQnLFxyXG4gICAgICAnZGF5anMnLFxyXG4gICAgICAnbG9kYXNoLWVzJyxcclxuICAgIF0sXHJcbiAgICAvLyBcdTk4ODRcdTY3ODRcdTVFRkFcdTRFMkRcdTVGM0FcdTUyMzZcdTYzOTJcdTk2NjRcdTc2ODRcdTRGOURcdThENTZcdTk4NzlcclxuICAgIGV4Y2x1ZGU6IFsnQHZhbnQvdG91Y2gtZW11bGF0b3InXSxcclxuICB9LFxyXG5cclxuICAvLyBcdTVCOUFcdTRFNDlcdTUxNjhcdTVDNDBcdTVFMzhcdTkxQ0ZcdTY2RkZcdTYzNjJcdTY1QjlcdTVGMEZcclxuICBkZWZpbmU6IHtcclxuICAgIF9fQVBQX1ZFUlNJT05fXzogSlNPTi5zdHJpbmdpZnkocHJvY2Vzcy5lbnYubnBtX3BhY2thZ2VfdmVyc2lvbiB8fCAnMC4wLjAnKSxcclxuICAgIF9fQlVJTERfVElNRV9fOiBKU09OLnN0cmluZ2lmeShuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkpLFxyXG4gICAgX19ERVZfXzogcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcsXHJcbiAgICBfX1BST0RfXzogcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJyxcclxuICB9LFxyXG59KVxyXG4iXSwKICAibWFwcGluZ3MiOiAiO0FBQXdYLFNBQVMsZUFBZSxXQUFXO0FBQzNaLFNBQVMsb0JBQW9CO0FBQzdCLE9BQU8sU0FBUztBQUNoQixPQUFPLGdCQUFnQjtBQUN2QixPQUFPLGdCQUFnQjtBQUN2QixTQUFTLG9CQUFvQjtBQUM3QixPQUFPLHNCQUFzQjtBQUM3QixPQUFPLHlCQUF5QjtBQVArTSxJQUFNLDJDQUEyQztBQVVoUyxJQUFPLHNCQUFRLGFBQWE7QUFBQSxFQUMxQixTQUFTO0FBQUEsSUFDUCxJQUFJO0FBQUEsTUFDRixVQUFV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
